//注册页面的js

//用户名的状态值
let userName_flag = false;
//密码的状态值
let password_flag = false;
//确认密码的状态值
let re_password_flag = false;
//姓名的状态值
let name_flag = false;
//年龄的状态值
let age_flag = false;
//手机号的状态值
let phone_flag = false;
//出生日期的状态值
let userDate_flag = false;

//用户名的正则
let userNameRegExp = "^[a-zA-Z0-9_]{1,15}$"; //用户名只能是15位以下的字母或数字
//密码的正则
let passwordRegExp = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,}$"; //必须要有数字和字母,且最少不能少于六位
//姓名的正则  判断姓名--可以是中文,可以是英文，允许输入点（英文名字中的那种点允许输入空格,中文和英文不能同时出现,长度在20个字符以内 )
let nameRegExp = "^([\\u4e00-\\u9fa5]{1,20}|[a-zA-Z\\.\\s]{1,20})$";
//用来判断年龄的正则
let ageRegExp = "^[0-9]{0,1}[0-9]{0,1}$";
//用来判断手机号的正则
let phoneRegExp = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9]))\\d{8}$";

//获取用户名的提示信息
let usernameSpan = $("#usernameSpan");
//获取密码的提示信息
let passwordSpan = $("#passwordSpan");
//获取确认密码的提示信息
let re_passwordSpan = $("#re_passwordSpan");
//获取姓名的提示信息
let nameSpan = $("#nameSpan");
//获取年龄的提示信息
let ageSpan = $("#ageSpan");
//获取手机号的提示信息
let phoneSpan = $("#phoneSpan");
//获取出生日期的提示信息
let userDateSpan = $("#userDateSpan");

//获取用户名框
let username = $("input[name='username']");
//获取密码框
let password = $("input[name='password']");
//获取确认密码框
let re_password = $("input[name='re_password']");
//获取姓名框
let name = $("input[name='name']");
//获取年龄框
let age = $("input[name='age']");
//获取手机框
let phone = $("input[name='phone']");
//获取出生日期
let userDate = $("input[name='userDate']");

//用户名输入框离焦操作
username.on("blur", username_y)
//密码输入框离焦操作
password.on("blur", password_y)
//确认密码输入框离焦操作
re_password.on("blur", re_password_y)
//姓名输入框离焦操作
name.on("blur", name_y)
//年龄输入框离焦操作
age.on("blur", age_y)
//年龄输入框离焦操作
phone.on("blur", phone_y)

/**
 * 用户名输入框里面的值的判断
 */
function username_y() {
	//获取用户框的值
	let str = username.val().trim();
	//正则判断输入的值
	if(userRegExp(str, userNameRegExp)) {
		//提示信息
		usernameSpan.css("color", "red");
		usernameSpan.html("×输入有误,用户名只能是15位以下的字母或数字");
		//状态值赋值
		userName_flag = false;
		return
	}
	//发送ajax请求,判重用户名
	$.ajax({
		type: "post",
		url: "http://localhost:8081/user/userByUserName",
		data: {
			userUserName: str
		},
		dataType: "json",
		success: function(data) {
			if(data.code == 1) {
				//提示信息
				usernameSpan.css("color", "red");
				usernameSpan.html("×该用户名重复");
				//状态值赋值
				userName_flag = false;
				return
			} else if(data.code == 0) {
				//提示信息
				usernameSpan.css("color", "green");
				usernameSpan.html("√");
				//状态值赋值
				userName_flag = true;
			}
		},
		error: function() {
			alert("发送失败了~请稍后重试一下>_<");
		}
	});

}

/**
 * 密码输入框里面的值的判断
 */
function password_y() {
	//获取密码框的值
	let str = password.val().trim();
	//正则判断输入的值
	if(userRegExp(str, passwordRegExp)) {
		//提示信息
		passwordSpan.css("color", "red");
		passwordSpan.html("×输入有误,必须要有数字和字母,且最少不能少于六位");
		//状态值赋值
		password_flag = false;
		return
	}
	//提示信息
	passwordSpan.css("color", "green");
	passwordSpan.html("√");
	//状态值赋值
	password_flag = true;
}

/**
 * 确认密码输入框里面的值的判断
 */
function re_password_y() {
	//获取确认密码框的值
	let str_re_password = re_password.val().trim();
	//获取密码框的值
	let str_password = password.val().trim();
	//判断两次输入的密码是否一致
	if(str_password !== str_re_password) {
		//提示信息
		re_passwordSpan.css("color", "red");
		re_passwordSpan.html("×两次输入的密码不一致");
		//状态值赋值
		re_password_flag = false;
		return;
	}
	//提示信息
	re_passwordSpan.css("color", "green");
	re_passwordSpan.html("√");
	//状态值赋值
	re_password_flag = true;
}

/**
 * 姓名输入框里面的值的判断
 */
function name_y() {
	//获取姓名框的值
	let str = name.val().trim();
	//正则判断输入的值
	if(userRegExp(str, nameRegExp)) {
		//提示信息
		nameSpan.css("color", "red");
		nameSpan.html("×姓名格式输入有误");
		//状态值赋值
		name_flag = false;
		return
	}
	//提示信息
	nameSpan.css("color", "green");
	nameSpan.html("√");
	//状态值赋值
	name_flag = true;
}

/**
 * 年龄输入框里面的值的判断
 */
function age_y() {
	//获取年龄框的值
	let str = age.val().trim();
	if(str <= 0) {
		//提示信息
		ageSpan.css("color", "red");
		ageSpan.html("×年龄格式输入有误");
		//状态值赋值
		age_flag = false;
		return
	}
	//正则判断输入的值
	if(userRegExp(str, ageRegExp)) {
		//提示信息
		ageSpan.css("color", "red");
		ageSpan.html("×年龄格式输入有误");
		//状态值赋值
		age_flag = false;
		return
	}
	//提示信息
	ageSpan.css("color", "green");
	ageSpan.html("√");
	//状态值赋值
	age_flag = true;
}

/**
 * 手机输入框里面的值的判断
 */
function phone_y() {
	//获取用户框的值
	let str = phone.val().trim();
	//正则判断输入的值
	if(userRegExp(str, phoneRegExp)) {
		//提示信息
		phoneSpan.css("color", "red");
		phoneSpan.html("×手机号格式错误");
		//状态值赋值
		phone_flag = false;
		return
	}
	//提示信息
	phoneSpan.css("color", "green");
	phoneSpan.html("√");
	//状态值赋值
	phone_flag = true;
}

/**
 * 出生日期框里面的值的判断
 */
function userDate_y() {
	//获取用户框的值
	let str = userDate.val().trim();
	if(str == "") {
		//提示信息
		userDateSpan.css("color", "red");
		userDateSpan.html("×请选择出生日期");
		//状态值赋值
		userDate_flag = false;
		return
	}
	//提示信息
	userDateSpan.css("color", "green");
	userDateSpan.html("√");
	//状态值赋值
	userDate_flag = true;
}

/**
 * 封装正则
 * @param {Object} value 获取到的输入框里的值
 * @param {Object} str 正则表达式
 */
function userRegExp(value, str) {
	//创建正则验证对象 ,判断数据 返回true是正确格式
	return !new RegExp(str).test(value);
}

//注册按钮
function register() {
	//获取性别
	let gender = $("input[name='gender']:checked").val();
	//获取年级
	let userGrade = $('select[name="userGrade"] option:selected').val();;
	//获取班级
	let userClasses = $('select[name="userClasses"] option:selected').val();
	//获取验证码
	let code = $("input[name='ver-code']").val();
	username_y();
	password_y();
	re_password_y();
	name_y();
	age_y();
	phone_y();
	userDate_y();
	//判断值是否正确
	if(!(userName_flag && password_flag && re_password_flag && name_flag && age_flag && phone_flag && userDate_flag)) {
		return;
	}
	if(userGrade == 0 || userClasses == 0) {
		alert("请选择年级或班级")
		return;
	}
	let user = {
		userUserName: username.val(), //用户名
		userPassword: password.val(), //密码
		userRealName: name.val(), //真实姓名
		userAge: age.val(), //年龄
		userGender: gender, //性别
		userPhone: phone.val(), //手机号
		userBirthday: userDate.val(), //出生日期
		userGradeId: userGrade, //年级
		userClassesId: userClasses, //班级
		code: code //验证码
	}
	console.log(user);
	//添加ajax请求
	$.ajax({
		type: "post",
		url: "http://localhost:8081/user/registerUser",
		data: {
			userUserName: username.val(), //用户名
			userPassword: password.val(), //密码
			userRealName: name.val(), //真实姓名
			userAge: age.val(), //年龄
			userGender: gender, //性别
			userPhone: phone.val(), //手机号
			userBirthday: userDate.val(), //出生日期
			userGradeId: userGrade, //年级
			userClassesId: userClasses, //班级
			code: code //验证码
		},
		dataType: "json",
		success: function(data) {
			if(data.code == 0) {
				spop({
					template: '<h4 class="spop-title">注册成功</h4>即将于3秒后返回登录',
					position: 'top-center',
					style: 'success',
					autoclose: 3000,
					onOpen: function() {
						var second = 2;
						var showPop = setInterval(function() {
							if(second == 0) {
								clearInterval(showPop);
							}
							$('.spop-body').html('<h4 class="spop-title">注册成功</h4>即将于' + second + '秒后返回登录');
							second--;
						}, 1000);
					},
					onClose: function() {
						window.location.href = "student_login.html";
					}
				});
			} else {
				alert(data.msg);
			}

		},
		error: function() {
			alert("发送失败了~请稍后重试一下>_<");
		}
	});

}

//手机发送验证码
function registerMessage() {
	//获取手机号
	let phone = $("input[name='phone']").val(),
		msg_flag = false;
	let regExp = new RegExp("^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9]))\\d{8}$");
	if(!regExp.test(phone)) {
		alert("请输入正确的手机格式");
		msg_flag = true;
	}

	if(msg_flag) {
		return false;
	} else {
		//先使用用户名发送ajax请求--查看该用户是否存在
		$.ajax({
			type: "post",
			url: "http://localhost:8081/user/registerPhoneMsg",
			data: {
				userPhone: phone
			},
			dataType: "json",
			success: function(data) {
				//返回的状态值为0说明查询成功账号存在
				alert(data.msg);
			},
			error: function() {
				alert("发送失败了~请稍后重试一下>_<");
			}
		});

	}
}